<?php 
 header("Content-type:text/html;charset=utf8");
   $parser  = xml_parser_create();
   var_dump($parser);
   function start($parser,string $element_name, $element_attrs) {
   
		switch($element_name)
		{
		case "NOTE":
		echo "-- Note --<br>";
		break;
		case "TO":
		echo "To: ";
		break;
		case "FROM":
		echo "From: ";
		break;
		case "HEADING":
		echo "Heading: ";
		break;
		case "BODY":
		echo "Message: ";

	   }
   }	

   function stop($parser, $data) {

     echo "<br>";

   }
    
    function char($parser, $data) {

    	echo $data;
    }
  //添加 xml_set_element_handler() 函数来定义，当解析器遇到开始和结束标签时执行哪个函数
  xml_set_element_handler($parser, "start", "stop");
//添加 xml_set_character_data_handler() 函数来定义，当解析器遇到字符数据时执行哪个函数
  xml_set_character_data_handler($parser, "char");

  $fp = fopen("tmp_Test.xml", "r");
  var_dump($fp);
   while ($data = fread($fp, 4096)) {
    //通过 xml_parse() 函数来解析文件
   	xml_parse($parser, $data,feof($fp)) or die(sprintf("XML Error: %s at line %d", 
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
   }
   //调用 xml_parser_free() 函数来释放分配给 xml_parser_create() 函数的内存
   xml_parser_free($parser);
  

 ?>